home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
listings
/
v_08_03
/
8n03019a
< prev
next >
Wrap
Text File
|
1990-03-18
|
1KB
|
69 lines
*****Listing 1*****
#include <stdio.h>
#include <stdlib.h>
/* structure type flag values */
#define TYPENONE 0 /* Not pointing at an object */
#define TYPECHAR 1 /* char */
#define TYPEINT 2 /* int */
#define TYPELONG 3 /* long */
#define TYPEDOUBLE 4 /* double */
struct node {
struct node *pfwd; /* forward ptr */
struct node *pbwd; /* backward ptr */
void *pobject; /* ptr to object */
unsigned int objtype; /* indicate object type */
};
main()
{
char c = 'A';
int i = 10;
long int l = 123456;
double d = 123.45;
struct node *pnode;
pnode = malloc(sizeof(struct node));
/* let's point to a double */
pnode->pobject = &d;
pnode->objtype = TYPEDOUBLE;
pnode->pfwd = NULL;
pnode->pbwd = NULL;
/* at a later point, let's process the object to which we point */
switch (pnode->objtype) {
case TYPECHAR:
printf("char: %c\n", *(char *)pnode->pobject);
break;
case TYPEINT:
printf("int: %d\n", *(int *)pnode->pobject);
break;
case TYPELONG:
printf("long: %ld\n", *(long *)pnode->pobject);
break;
case TYPEDOUBLE:
printf("double: %f\n", *(double *)pnode->pobject);
break;
case TYPENONE:
printf("none:\n");
break;
}
}
The output generated by this program is:
double: 123.450000